Жесткий диск Вектор 06Ц, разбивка: 00000H . . Неиспользуемое поле (Возможно для чего то зарезервировано) 80H . 00080H . . Служебное поле, имеет много свободных байт. Можно что то закладывать... . . Байты 80H...85 - информация о разбивке HDD - содержит данные о параметрах диска и количестве дискет на HDD. . 80h - колическво секторов . 81h - количество головок . 82h, 83h - количество цилиндров, младший байт 82h, cтарший 83h. . 84h, 85h - количество дискет на диске, младший байт 84h, cтарший 85h. . пример - 3F 10 00 40 18 29 - 63 сектора, 16 головок, 16384 цилиндра, 10520 дискет на диске. . в каческве примера показан максимальный обьем диска 8 гб... . 00400H . . информация о загрузочном секторе, где начало, сколько блоков и т.д. 80H . . биты 400h и 401h - адресс загрузки (запуска) содержимого загрузочного сектора. младший бит . первый. например 100h - 00 01 - означает что данный файл нужно загрузить в ОЗУ начиная с адреса . 100H и передать управление по адр. 100H. Вноситчся например SYSGEN OS.COM A:100 . (100 говорит о запуске с адреса 100H) . . бит 404h - количество блоков (килобайт) составляющих загрузочный файл. Умножается на 2 . 1 блок (кб) = 2 сектора. Сектор = 512 байт. Например 0E - одначает что читать нужно 14*2 секторов. . ;+------+-------+-------------------------------------------------------------------+ ;|Байты |Пример | Назначение | ;+------+-------+-------------------------------------------------------------------+ ;|00,01 |0100 |Адрес, скоторого будет загружена ОС | ;|02,03 |0100 |Адрес, куда будет передано управление после загрузки ОС | ;|04,05 |0010 |Количество секторов под ОС | ;|06 |00 |Код размера диска: 1 - 8", 0 - 5.25" | ;|07 |01 |Способ записи: 0 - FM, 1 - MFM | ;|08 |01 |Дорожек на дюйм: 00 - 48TPI, 01 - 96TPI, 02 - 135TPI | ;|09 |01 |Данные вектора перевода секторов: SF = 01 -таблица не используется | ;| | |если SF>1, то по адресам с 20H будет таблица перевода секторов | ;| | |с размером в байтах =SF | ;|0A |03 |Размер физического сектора: 0 -128 байт, 1 -256, 2 -512, 3 -1024 | ;|0B |01 |Число сторон НГМД (SDS): 0 -SS, 1 -DS, чётные логические дорожки с | ;| | |нулевой стороны, нечётные - с первой | ;|0C,0D |0005 |Количество физических секторов на дорожке | ;|0E,0F |0050 |Количество дорожек на одной стороне (TPD, TPD'=SDS*TPD) | ;|10,11 |0028 |Количество логических секторов (по 128 байт) на дорожке (SPT) | ;|12 |04 |Фактор сдвига (BSH = LOG2(BLS/128) ) | ;| | |размер блока 00010000 записей = 2кб | ;|13 |0F |Маска расположения блока данных (BLM = BLS/128-1 ) | ;|14 |00 |Маска размера блока (EXM = BLS/1024-1-DSM/256 ) | ;|15,16 |0187 |Количество блоков данных на диске (DSM=SPT*(TPD'-OFS)*128/BLS-1 ) | ;|17,18 |007F |Число элементов оглавления минус 1 ( DRM ) | ;|19,1A |00C0 |Количество блоков под оглавление (ALD = CKS*DRM/BLS) | ;|1B,1C |0020 |Размер вектора контроля оглавления (CKS) размер одного элемента | ;|1D,1E |0008 |Количество дорожек под операционную систему, включая нулевую (OFS) | ;|1F |FE |Контрольная сумма этого сектора (= Сумма байт (00...1E) +66H | ;|20-80 |00..00 |Резерв для вектора перевода секторов | ;+------+-------+-------------------------------------------------------------------+ ;|BLS - размер физического сектора в байтах | ;+----------------------------------------------------------------------------------+ . . 0480H . . Место для системного загрузчика, согласно информации в предидущем разделе . тут помещается системный загрузочный файл 9F80H . A400H . . таблица размещения файлов на диске N 1000H . . Каталог CP/M 2.2 имеет только один тип записи: . . UU F1 F2 F3 F4 F5 F6 F7 F8 T1 T2 T3 EX S1 S2 RC .FILENAMETYP.... . АЛ АЛ АЛ АЛ АЛ АЛ АЛ АЛ АЛ АЛ АЛ АЛ АЛ АЛ ................ . . UU = номер пользователя. 0-15 . Номер пользователя = 0E5h => Файл удален . Fn - имя файла . Тн - тип файла. Для них используются 7-битные символы ASCII. . . EX = Счетчик экстентов, младший байт — принимает значения от 0 до 31 . S2 = счетчик экстента, старший байт. . . Экстент — это часть файла, управляемая одной записью каталога. . Если файл занимает больше блоков, чем может быть указано в одной записи каталога, . ему дается несколько записей, отличающихся своими байтами EX и S2. . формула: Номер записи = ((32*S2)+EX) / (exm+1), где exm — это . значение маски экстента из блока параметров диска. Для Вектора оба значения 0. . . S1 - зарезервирован, установлен в 0. . RC - количество записей (1 запись=128 байт), используемых в этом экстенте, младший байт. . Общее количество записей, используемых в этом экстенте, равно . . (EX & EXM) * 128 + RC . . Если RC >=80h, этот экстент заполнен и может быть еще один на . диск. Длина файлов сохраняется только до ближайших 128 байт. . . АЛ - Распределение. Каждый AL является номером блока на диске. Если AL . число равно нулю, этому разделу файла не выделено место для хранения . (т.е. не существует). Например, файл размером 3k может иметь распределение . 5,6,8,0,0.... - первая 1к в блоке 5, вторая в блоке 6, . третий блок 8. . Номера AL могут быть либо 8-битными (если в сети менее 256 блоков). . диск) или 16-бит (сначала сохраняется младший байт). . . Вычислить адресс и размер файла на диске: Длинна записи RC(Xh)*80h; И адресс каждого АЛ, . если они не подряд... ((АЛ1(Xh)-2h)*800h)+B400h+((N-1)*C4400h)=Yh Входная точка. и так далее. . . (N-1)*C4400h+B400h - смещение в зависимости от номера дискеты на область хранения данных. . . (N-1)*C4400h+A400h - смещение в зависимости от номера дискеты на таблицу размещения файлов. . . 1 блок = 1 кб (800h) . B400H . . место для размещения файлов согласно таблице размещения файлов на диске N C3400H . CE800H . . таблица размещения файлов на диске N+1 1000H . CF800H . . место для размещения файлов согласно таблице размещения файлов на диске N+1 C3400H . 192C00H . . . Найти нужную дискету на диске: (С4400*(N-1))+A400=Yh смещение на диске, которое соответствует началу N дискеты. . N - номер дискеты в HEX (16 ричной системе счисления).